Encoding is the process by which information from a source is converted into symbols to be communicated. Decoding is the reverse process, whereby these code symbols are converted back into information understandable by a receiver.
Data encoding adds redundancy or parity bits (or both) to streams of digital data to reduce susceptibility to data corruption. Data corruption typically occurs in the form of interference or noise (or both). Interference may take the form, for example, of intersymbol interference. The noise may comprise channel noise.
Error correction coding (ECC) allows a receiver to detect and possibly correct errors introduced into the data by interference or noise. In this manner, appropriate data encoding can reduce or eliminate the need to retransmit or rewrite corrupted data, or to identify data loss if rewriting is not possible. Error correction coding schemes may include, for example, convolutional coding, block coding, and Reed-Solomon coding.
A typical coding arrangement includes a modulation encoder that transforms data into codewords according to one or more given constraints. Generally, modulation encoding techniques are used to map a random input signal (comprised of bits) to a signal having desirable properties. For example, modulation coding techniques can be employed to enforce one or more constraints that decrease error probabilities, increase the signal-to-noise ratio (SNR) or otherwise improve the performance of the channel synchronization and detection (or a combination of the foregoing). For example, a number of modulation coding techniques have been proposed to limit the number of successive transitions within a predefined data window, to avoid signal degradation at the Nyquist frequency. Maximum transition run (MTR) codes, for example, are one type of modulation code that limits the number of consecutive transitions.
A need exists for improved methods and apparatus for modulation encoding. Yet another need exists for modulation encoding techniques that employ a trellis.